/**
 * @file servo_control.h
 * @brief SG90舵机控制接口
 * @date 2024-07-15
 *
 * @details
 * 提供SG90舵机控制的基本功能接口
 * 使用PWM4控制舵机角度
 */

#ifndef __SERVO_CONTROL_H__
#define __SERVO_CONTROL_H__

#include "pwm_driver.h"
#include <stdint.h>

// 舵机PWM参数定义
#define SERVO_PERIOD_TICKS 40000U // 20ms, 2MHz时钟下
#define SERVO_MIN_PULSE_TICKS 2000U  // 0.5ms
#define SERVO_MAX_PULSE_TICKS 40000U // 20.0ms，极限测试

#define SERVO_PWM_INST 4 // 使用PWM4

/**
 * @brief 将角度转换为PWM计数值
 * @param angle 舵机角度(0-180度)
 * @return 对应的PWM计数值
 */
uint32_t angle_to_ticks(int angle);

/**
 * @brief 设置舵机角度
 * @param angle 舵机角度(0-180度)
 */
void servo_set_angle(int angle);

/**
 * @brief 初始化舵机
 */
void servo_init(void);

/**
 * @brief 简单延时函数
 * @param ms 延时时间(毫秒)
 */
void delay_ms(uint32_t ms);

#endif /* __SERVO_CONTROL_H__ */ 